Method for transmitting and downloading streaming data

ABSTRACT

A method for transmitting and downloading streaming data is disclosed. The method comprises (a) establishing connections with a plurality of nodes; (b) sending a request for sub blocks of streaming data to the plurality of nodes where connection is established to download the sub blocks; (c) monitoring download state of the established connections; and (d) redistributing sub Blocks to be downloaded from some of the nodes where connection is established according to the monitoring results; wherein, the step (b) to step (d) are repeated for downloading sub blocks included in next block when all sub Blocks included in a block are downloaded.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a U.S. National Phase Application of InternationalApplication PCT Application No. PCT/KR2004/00007 filed on Jan. 5, 2004,which claims the benefit of priority from Korean Patent Application No.10-2003-0003388 filed on Jan. 17, 2003. The disclosures of InternationalApplication PCT Application No. PCT/KR2004/00007 and Korean PatentApplication No. 10-2003-0003388 are incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to a method for transmitting anddownloading streaming data, more particularly to a method fortransmitting and downloading streaming data through a plurality ofdistributed nodes.

BACKGROUND OF THE INVENTION

Conventionally, most content data provided through the Internet weresmall size data such as document or picture. However, as datatransmission technology and devices develop, multimedia contents arealso widely provided. The multimedia contents are transmitted to userclients through the streaming method.

Conventionally, streaming data were transmitted from one server to userclients.

The streaming data should be transmitted in real time. However, as thestreaming data were transmitted from one server to user clientsconventionally, transmission delay has occurred frequently when load ofthe server becomes higher or connection state is unstable. Because thestreaming data should be played as soon as they are downloaded,transmission delay affects QoS (Quality of Service) greatly unlikegeneral file download.

As a prior art regarding file download, U.S. Pat. No. 6,339,785discloses a method for downloading files through multiple servers.According to the U.S. Pat. No. 6,339,785, total file is divided by N andfile is downloaded through N servers so that file can be transmittedstably although error occurs in one connection.

However, according to the above file download method, the file isavailable only after whole data are downloaded. Therefore, the downloadmethod of U.S. Pat. No. 6,339,785 can not be applied to streaming datathat should be played as soon as they are downloaded.

DETAILED DESCRIPTION OF THE INVENTION

In order to solve the above mentioned problems, the present inventionintends to provide a method for transmitting and downloading streamingdata through a plurality of nodes.

Another object of the present invention is to provide a method fordownloading streaming data stably from plurality of user clients in P2Pnetwork and a communication agent program installed in user clients.

Another object of the present invention is to provide a method fordownloading streaming data stably in the file transmission system withmultiple servers and a communication agent program installed in userclients.

Another object of the present invention is to provide a method fordividing streaming data into blocks and sub blocks and downloading datafrom plurality of connections.

In order to achieve above-mentioned objects, according to a preferredembodiment of the present invention, there is provided a method fordownloading streaming data comprising the steps of: (a) establishingconnections with a plurality of nodes; (b) sending a request for subblocks of streaming data to the plurality of nodes where connection isestablished to download the sub blocks; (c) monitoring download state ofthe established connections; and (d) redistributing sub blocks to bedownloaded from some of the nodes where connection is establishedaccording to the monitoring result; wherein, the step (b) to step (d)are repeated for downloading sub blocks included in the next block whenall sub blocks included in a block are downloaded

According to the present invention, the step of determining sub blocksto download from each of the nodes where connection is established maybe further comprised.

The step (c) may comprise the step of monitoring if there exists aconnection where sub block download is completed.

The sub blocks to be downloaded from each of the nodes may be determinedby calculating connection state valuation index.

The connection state valuation index may be calculated using informationselected from the group consisting of round-trip time with each of thenodes and average download speed from each of the nodes.

The step (d) may comprise the step of redistributing sub blocks betweena connection where sub block download is completed and some of theconnections where sub block download is not completed when a connectionwhere sub block download is completed exists.

The step (d) may comprise the step of redistributing sub blocks betweena connection where sub block download is completed and a connection ofwhich download rate is the lowest among connections where sub blockdownload is not completed.

The step for redistributing sub blocks between a connection where subblock download is completed and a connection of which the download rateis the lowest may comprise the steps of: determining download speed ofthe connection where the sub block download is completed and theconnection of which the download rate is the lowest; determining thenumber of remaining sub blocks to download in the connection of whichthe download rate is the lowest; determining if redistribution of subblocks is necessary; redistributing the remaining sub blocks between theconnection where sub block download is completed and the connection ofwhich the download rate is the lowest according to rate of the downloadspeed if sub block redistribution is necessary,

According to another embodiment of the present invention, there isprovided a communication agent program installed in a plurality userclients in the system where a connection control server and theplurality of user clients are connected through network, comprising: anagent manager module for providing information of contents stored in auser client and identification information of the user client to theconnection control server and transmitting contents request informationto the connection control server when a user requests contents; a nodeinformation manager module for receiving and storing list information ofnodes that store requested contents; a connection control module forestablishing connections with a plurality of nodes using the listinformation of nodes, and determining sub blocks to download from eachof the nodes where connection is established to request sub blocks, andredistributing sub blocks to download from some of the connected nodesby monitoring download state while downloading sub blocks; a sub blockmanager module for determining if all sub blocks included in a block aredownloaded and requesting sub blocks included in a next block todownload sub blocks included in the next block when all sub blocksincluded in a block is downloaded.

According to another embodiment of the present invention, there isprovided a communication agent program installed in user clientsdownloading streaming data from the system including a plurality ofcontent servers and at least a connection control server, comprising: adata request module for sending a request for transmission of data tothe connection control server; a node information manager module forreceiving and storing list of content servers from which the requesteddata are to be downloaded; a connection control module for establishingconnections with a plurality of content servers included in the contentsserver list, and requesting sub blocks of streaming data to downloadfrom the content servers where connection is established, andredistributing sub blocks to download in some of the content serverswhere connection is established by monitoring download state whiledownloading sub blocks from connected content servers; and a sub blockmanager module for determining if all sub blocks included in a block aredownloaded and requesting sub blocks included in a next block todownload sub blocks of the next block when all sub blocks included in ablock are downloaded.

According to another embodiment of the present invention, there isprovided a connection control server connected with a plurality of userclients through network for controlling connection between the userclients in order for a user client to download streaming data byconnecting other user clients, comprising: a mesh manager module forreceiving information of contents stored in the connected plurality ofuser clients and address information of the connected plurality of userclients, and providing information of nodes that store requestedcontents to a user client which requested contents; and a meshinformation database for storing information of contents stored in eachof the user clients and address information of each of the user-clients;wherein a communication agent program is installed in the plurality ofuser clients, the communication agent program controls user clients toestablish connections with a plurality of nodes using the nodeinformation, and to send a request for sub blocks of streaming data todownload to the connected nodes, and to redistribute sub blocks todownload by monitoring download state of each of the connected nodes.

According to another embodiment of the present invention, there isprovided a connection control server connected with a plurality of userclients and a plurality of content servers through network forcontrolling connection between the user clients and the content serversin order for a user client to download streaming data by connecting atleast two content servers, comprising: a server state determining modulefor receiving state information from the connected plurality of contentservers and determining state of each of the content servers; a serverlist providing module for providing list information of servers totransmit streaming data of requested contents when receiving contentsrequest information from a user client; wherein a communication agentprogram is installed in the user clients, the communication agentprogram controls the user clients to establish connections with at leasttwo content servers using the server list information, and determine subblocks of streaming data to download from each of the connected contentservers to request sub blocks, and to redistribute sub blocks todownload by monitoring download state of sub blocks from each of theconnected nodes.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic configuration of streaming data transmissionsystem where the present invention is applied.

FIG. 2 is an example of network system where the method for transmittingstreaming data according to the present invention is applied.

FIG. 3 is another example of network system where streaming datatransmission method of the present invention is applied.

FIG. 4 is another example of network system where streaming datatransmission method of the present invention is applied.

FIG. 5 is a structure of streaming data according to a preferredembodiment of the present invention.

FIG. 6 is a flow chart of streaming data download method according to apreferred embodiment of the present invention.

FIG. 7 is a flowchart of operation of the connection control serveraccording to a preferred embodiment of the present invention.

FIG. 8 is a flow chart operation of the connection control serveraccording to another embodiment of the present invention.

FIG. 9 is a block diagram of agent program installed in the user clientaccording to a preferred embodiment of the present invention.

FIG. 10 is a detailed block diagram of the connection control moduleaccording to a preferred embodiment of the present invention.

FIG. 11 is a flow chart of process that sub block is redistributed bydetermining connection state according to a preferred embodiment of thepresent invention.

FIG. 12 is a flow chart of process that is performed when there exists aconnection where sub block download is completed according to apreferred embodiment of the present invention.

FIG. 13 is a block diagram of module of the connection control-serveraccording to a preferred embodiment of the present invention.

FIG. 14 is a block diagram of the module of the connection controlserver according to another embodiment of the present invention.

BEST MODE FOR CARRYING OUT THE INVENTION

The present invention will be described by virtue of the followingembodiments in more detail.

FIG. 1 is a schematic configuration of streaming data transmissionsystem where the present invention is applied.

Referring to FIG. 1, the streaming data transmission system according tothe present invention may comprise a plurality of nodes 100, 102, 104,106, 108, 110 and a user client 112.

The user client establishes connections with selected plurality of nodes102, 106, 108 and downloads streaming data.

In FIG. 1, the plurality of nodes 100, 102, 104, 106, 108, 110 storecontents data and transmit requested contents data to the user clientafter receiving contents request information from the user client. Thenode may be a server that generally transmits contents or other userclient.

The user client 112 transmits contents request information to theplurality of nodes and downloads contents data from corresponding nodes102, 106, 108. In other words, according to the present invention,streaming data are downloaded from plurality of paths through pluralityof nodes.

At this time, the user client sends a request for different streamingdata to each of the nodes where connection is established and assemblesthe streaming data downloaded form the plurality of nodes.

FIG. 5 is a structure of streaming data according to a preferredembodiment of the present invention.

Referring to FIG. 5, the streaming data according to the presentinvention comprise a plurality of blocks 500 and each of the blockscomprises a plurality of sub blocks 502.

The block and sub block are logical unit for classifying streaming dataand it would be obvious to those skilled in the art that other terms canbe used.

Unlike general file download, the streaming data should be played whilebeing downloaded. Therefore, general file download method throughmultiple servers cannot be applied to the streaming data downloadbecause conventionally whole file data are divided into N segments andeach of the segments is downloaded through multiple paths. According tothe conventional file download method using multiple paths, a downloadedfile cannot be played until whole file data are downloaded whilestreaming data should be played as soon as they are downloaded.

Therefore, according to the present invention, whole streaming data aredivided into blocks and sub blocks included in a block are downloaded inparallel/distribution method through multi-paths.

For example, in the system of FIG. 1, if one block comprises ten subblocks, the user client 112 requests 1˜3 sub blocks to the second node102, 4˜7 sub blocks to the fourth node 106 and 8˜10 sub blocks to thefifth node 108.

If all sub blocks included in a block are downloaded, the user client112 requests sub blocks included in the next block. After all data of ablock are downloaded, sub blocks of the next block are downloaded, andtherefore data can be played while being downloaded although data aredownloaded in multi-paths.

In FIG. 5, the case where the streaming data are divided into blocks andsub blocks, however, it would be obvious to those skilled in the artthat the streaming data can be divided into smaller units than the subblock and can be transmitted by the smaller units.

When the user client sends a request for sub blocks to each of thenodes, the user client determines the connection state of each node. Forexample, among the second-node 102, the fourth node 106 and the fifthnode 108, if the connection state of the second node 102 is the best andthe connection state of the fifth node is the worst, the user client 112sends a request for the maximum number of sub blocks to the second nodeand minimum number of sub blocks to the fifth node. The method fordetermining the state of the node and requesting sub blocks according tothe result of determination will be explained in more detail referringto another figure.

When sub blocks are downloaded through the multi-paths, sub blockdownload in a connection can be completed earlier than in other,connections, and in this case, data are not transmitted in theconnection where sub block download is completed until sub blockdownload is completed in other connections. Idle connection of this typereduces transmission efficiency.

Therefore, according to the present invention, if sub block download iscompleted in a connection among the plurality of connections, some subblocks which are not transmitted are downloaded through the connectionwhere the sub block download is completed. The method for redistributingsub blocks to be downloaded when a sub block download is completed in aconnection will be explained in more detail referring to another figure.

FIG. 2 is an example of network system where the method for transmittingstreaming data according to the present invention is applied.

FIG. 2 illustrates a case where streaming data transmission method usingP2P (Peer to Peer) is applied.

Referring to FIG. 2, the network system where the present invention isapplied may comprise a connection control server 200 and a plurality ofclients 202, 204, 206, 208, 210, 212, 214, and 216.

The connection control server 200 receives contents request informationfrom a user client and provides address information of other userclients that store the requested contents to the user client thatrequested contents in response to the contents request information. Theuser client that requested contents downloads streaming data of contentsthrough multi-paths using the provided address information.

For example, if a user client 210 requests movie ‘A’ to the connectioncontrol server 200, the connection control server 200 derives addressinformation of user clients that store, movie ‘A’ and provides theaddress information to the user client 210 that requested the contents.

The address information may be IP address and port number and it wouldbe obvious to those skilled in the art that other address identificationinformation can be used.

For example, let us assume that the user clients that store the movie‘A’ are reference number 202, 204 and 208 in FIG. 2. If the connectioncontrol server provides address information of clients 201, 204, 208 tothe user client 210 that requested contents, the user client 210 triesconnection establishment with the user clients 202, 204, and 208.

If the connection is established, the user client 210 requests differentsub blocks to each of the clients 202, 204, 208 where connection isestablished. If all sub blocks included in a block are downloaded, theuser client 210 requests sub blocks included in the next block. Thetransmitted streaming data are stored in the user client. If otherclients request the streaming data, the stored streaming data aretransmitted.

A communication agent program for communication with the connectioncontrol server or other clients is installed in each of the userclients. In the embodiment of the present invention, the case where thecommunication agent is computer software is described, however, it wouldbe apparent to those skilled in the art that the communication agent maybe an independent device or a card.

If power of a client where the communication agent is installed is on orthe communication agent is executed, the agent program transmitsinformation of contents stored in the user client to the connectioncontrol server 200 and the connection control server 200 stores thetransmitted information.

FIG. 3 is another example of network system where streaming datatransmission method of the present invention is applied.

FIG. 3 illustrates a case where streaming data are provided throughmultiple servers.

Referring to FIG. 3, the streaming data transmission system according toan embodiment of the present invention may comprise a plurality ofcontent servers 300, 302, 304, 306, 308, a connection control server 310and a user client 312.

The connection control server 310 receives contents request informationfrom the user client 312 and provides information of servers where theuser client should be connected among the plurality of servers 300, 302,304, 306, 308.

The connection control server 310 receives state information from theplurality of servers 300, 302, 304, 306, 308 periodically and controlsthe user client to be connected to the servers with good state.

The user client 312 receives server list information from the connectioncontrol server 310 and establishes connection with the content serversin the list to download streaming data through multiple paths.

As in the case of FIG. 2, a communication agent program is installed inthe user client for downloading streaming data through multiple paths.

FIG. 4 is another example of network system where streaming datatransmission method of the present invention is applied.

FIG. 4 is a system where P2P (Peer to Peer) system of FIG. 2 andmultiple server system of FIG. 3 are combined.

Referring to FIG. 4, the streaming data transmission system according toa preferred embodiment of the present invention may comprise aconnection control server 410, a plurality of content servers 400, 402,404, 406, 408 and a plurality of clients 412, 414, 416, 418, 420, 422,424, 426, 428. Although the plurality of content servers are illustratedin FIG. 4, the number of content server can be one unlike FIG. 4.

In FIG. 4, the connection control server 410 receives contents requestinformation from user clients, and provides list information of serversor user clients that store the requested contents.

Like FIG. 2 and FIG. 3, an agent program is installed in the userclients 412, 414, 416, 418, 420, 422, 424, 426, 428 and the agentprogram transmits contents information stored in the client to theconnection control server 410 when power of the client is on or theagent program is executed.

The user client that requested contents establishes connection withcontents servers or clients using the list information that is providedby the connection control server 410 and sends a request for differentsub blocks to the clients or content servers where connection isestablished to download streaming data.

In case of FIG. 4, the node list provided by the connection controlserver 410 can include user clients and server together. For example, ifcontents data are received from 5 nodes, one node may be a contentsserver and other 4 nodes are user clients. In this case, according to apreferred embodiment of the present invention, in order to reduce loadof the contents server, contents server can be excluded from nodes ifdownload state from user clients besides contents server is good.Further, the number of sub blocks requested to the contents server canbe reduced.

In FIG. 2 to FIG. 4, systems which can download streaming data throughmultiple paths are described. It would be obvious to those skilled inthe art that others systems which transmit data through plurality ofnodes besides systems of FIG. 2 to FIG. 4 can be applied to the presentinvention.

FIG. 6 is a flow chart of streaming data download method according to apreferred embodiment of the present invention.

Referring to FIG. 6, a user client receives node list information fromthe connection control server S600. In system of FIG. 2, nodes are userclients that stores contents. In system of FIG. 3, nodes are pluralityof content servers, and in system of FIG. 4, nodes can include both ofuser clients and content server.

If node list information is received, the user client establishesconnections with some or all of nodes included in the node list S602.According to a preferred embodiment of the present invention, the userclient establishes TCP connection, and other connection establishmentmethod can be used. If connection establishment fails, information ofnodes where connection establishment failed is stored in a black listqueue, and connection establishment is not tried for nodes stored in theblack list queue in following connection establishment.

If connection is established, the user client determines connectionstate with nodes and determines sub block number to be downloaded formthe nodes S604.

According to an embodiment of the present invention, the connectionstate is determined by round-trip time with each node or download speedfrom each node.

According to another embodiment of the present invention, sub blocks tobe downloaded can be determined without connection state information ininitial state of download. For example, if streaming data are downloadedfrom 3 nodes and one block comprises 15 sub blocks, the user clientsrequests 5 sub blocks for each of the 3 nodes.

If sub blocks to be downloaded from each of the nodes are determined,the user clients send a request for transmission of sub blocks to thenodes where connection is established. S606. The user client may send arequest for sub blocks to all nodes where connection is established orto some of the nodes where connection is established.

The user client downloads sub blocks from nodes where connection isestablished S608. Although it is not shown in FIG. 6, the user clientdetermines if download error occurs while receiving sub blocks.According to a preferred embodiment of the present invention, occurrenceof download error is determined by checking checksum value of subblocks.

Alternatively, download error can also be determined by checking thechecksum value of block after receiving all blocks.

While receiving sub blocks, the user client determines if a connectionwhere all requested sub blocks are downloaded exists S610.

If there exists a connection where all requested sub blocks aredownloaded, the user client redistributes sub blocks of which thedownload is not completed to the connection where sub block download iscompleted to download redistributed sub blocks from the connection sothat the connection where the sub block download is completed does notbecome idle state.

The user client determines if all sub blocks included in a block aredownloaded S614.

If all sub blocks are downloaded, the user client repeats the processthat determines numbers of sub blocks in the next block to be downloadedfrom each of the nodes through multiple paths S604.

The steps from S610 to S614 are repeated until all sub blocks includedin a block are received.

As described referring to FIG. 6, according to the present invention, ifsub block download is completed in a path (=connection), sub blocks tobe downloaded from each of the nodes are redistributed in order to avoidoccurrence of idle connection, by which data download efficiency can beimproved.

In FIG. 6, a case that sub blocks are redistributed for the nodes thatare transmitting streaming data to the user client. However, it would beobvious to those skilled in the art that sub blocks can also beredistributed for the nodes that are not transmitting sub blocks bymonitoring the state of nodes to which sub block transmission is notrequested.

Further, although it is not shown in FIG. 6, the download mode can bechanged so that streaming data are downloaded from a singular server asconventional method if streaming data cannot be downloaded from theplurality of nodes.

FIG. 7 is a flowchart of operation of the connection control serveraccording to a preferred embodiment of the present invention.

FIG. 7 illustrates operation of the connection control server in P2Pnetwork of FIG. 2 or network where P2P and multiple severs are combined.

Referring to FIG. 7, the connection control server receives addressinformation and contents information from the connected nodes S700. Asdescribed above, the communication agent program is installed in theeach of the user client (node) and the communication agent programtransmits information of contents stored in the user client andinformation of address of the user client to the connection controlserver. The received node address information and node contentsinformation are stored in the database of the connection control server.

The connection control server receives contents request information fromconnected nodes S702. Using the information received in step S700, theconnection control server that received contents request informationsearches node that stores the requested contents S704.

The connection control server provides node list information to the userclient that requested contents data S706.

Although it is not shown in FIG. 7, the connection control server mayalso receive node state information (for example, PING information) andmay provide received node state information together with the node listinformation to the user client.

After receiving node list information, the user client selects nodewhere connection is to be established using the state information. Ifconnection establishment fails or data download rate is not good, theuser client selects new nodes where connection is to be establishedusing the node state information. The node state information can beupdated continuously, the updated information is provided to the userclient which requested contents data or is downloading data.

FIG. 8 is a flow chart of operation of the connection control serveraccording to another embodiment of the present invention.

FIG. 8 illustrates operation of the connection control server networkusing multiple servers, such as FIG. 3.

Referring to FIG. 8, the connection control server receives stateinformation from each of the content servers 5800. According to apreferred embodiment of the present invention, the state information maybe one or combination selected from group comprising bandwidthinformation, CPU usage rate information, memory usage rate information,the number of users connected, and file I/O information. It would beobvious to those skilled in the art that other information besidesabove-described information can also be used as the state information ofserver.

The connection control server receives contents request information froma user client S802.

The connection control server that received contents request informationprovides address information of servers with good state (in other words,node list information) using the state information in S800 and sub blockdistribution information (information on which sub blocks to bedownloaded from each of the content servers) to the client thatrequested contents S804.

In FIG. 8, the case that sub block distribution information istransmitted to the user client from the connection control server,however, it would be obvious to those skilled in the art that the clientitself can distribute sub blocks to download by checking the connectionstate after connecting the content servers.

According to another embodiment of the present invention, in initialstate of data download, the connection control server provides sub blockdistribution information. Then, if download of a block data iscompleted, the user client itself distributes sub blocks to downloadfrom each of the content servers in the download of the next sub blockbecause content server can determine download speed with each of thecontent servers.

FIG. 9 is a block diagram of agent program installed in the user clientaccording to a preferred embodiment of the present invention.

Referring to FIG. 9, the communication agent program according to apreferred embodiment of the present invention may comprise an agentmanager module 900, a cache manager module 902, a connection controlmodule 904, a node manager module 906, a block manager module 908 and asub block manager module 910.

In FIG. 9, the agent manager module 900 performs communication with theconnection control server and provides user client information includingIP address and port number and information of contents stored in theuser client to the connection control server when the power of the userclient is on or the agent program is executed.

Further, the agent manager module 900 provides contents requestinformation to the connection control server when user requestscontents. The agent manager module may provide meta information of thecontents to a player which plays contents data when meta information isnecessary for play of the requested contents.

The cache manager module 902 manages streaming data downloaded fromnodes. The cache manager module 902 provides information for remainingcapacity of the cache and information of contents stored in the cache.The cache manager module 902 provides information of contents stored inthe cache when power of the user client is on or the agent program isexecuted. According to a preferred embodiment of the present invention,the cache manager module 902 scrambles the downloaded data when thedownloaded data are stored.

The connection control module 904 establishes connections withpredetermined number of nodes using the node list information receivedfrom the connection control server. The connection control module 904distributes sub blocks to download from each of the nodes by determiningthe connection state of nodes and requests sub blocks to each of thenodes according to the distribution result.

Further, the connection control module 904 monitors the download stateswith each of the nodes continuously, and redistributes sub blocks todownload from each of the nodes according to the monitoring result.

According to a preferred embodiment of the present invention, theconnection control module 904 monitors if there exists connection wheresub blocks download is completed, and the connection control module 904redistributes sub blocks between the connection where sub block downloadis completed and some of the connections where sub block download is notcompleted to avoid idle connection.

According to another embodiment of the present invention, sub blocks canbe redistributed previously according to the download state with each ofthe nodes although the connection where the sub block receipt is notcompleted does not exist.

According to anther embodiment of the present invention, the connectioncontrol module monitors state information of nodes where connection isnot established, and redistributes sub blocks between some of the nodesthat are transmitting data and some of the nodes that are nottransmitting data.

As mentioned above, in the system of FIG. 4, the connection controlmodule requests data to both of the server and the user clients, and ifthe download state from the user clients is good, the server may beexcluded from nodes or small amount of data may be requested to theserver in order to reduce load of the server.

The node manager module 906 provides node list information provided fromthe connection control server to the connection control module 904. Asdescribed above, the node list information may include IP address andport number. According to a preferred embodiment of the presentinvention, the agent manager module 900 requests information of nodesthat store the requested contents and provides the node list informationto the node manager module 906. The node information is updatedcontinuously because power of nodes may be off or connection state maybecome instable.

The sub block manager module 910 downloads sub blocks from nodes anddetermines if all sub blocks included in a block are downloaded. If allsub blocks are downloaded, the sub block manager module 910 providesdownloaded block data to the block manager module 908. If the sub blockmanager module determines all sub blocks included in a block aredownloaded, the connection control module requests sub blocks of thenext block.

The block manager module 908 provides received block data to a playerwhich plays streaming data or to the cache manager module.

Although it is not shown in FIG. 9, a reservation manager module can befurther included in the communication agent program. When streaming dataare transmitted with high speed, there may occur a case that the clientcannot download data at predetermined speed on account of instability ofinternet connection state. At this case, the movie data are pre-storedin the cache through the reservation manager module before playing ofthe movie data and the reservation manager module performs processes forthe reservation.

The reservation manager module manages information on streaming datawhich a user requested for reservation and monitors if the reservedcontents are received. The reservation manager module requests datathrough the connection control module until the download of requesteddata is completed.

FIG. 10 is a detailed block diagram of the connection control moduleaccording to a preferred embodiment of the present invention.

Referring to FIG. 10, the connection control module may comprise aconnection establishment module 1000, a connection state determiningmodule 1002, a sub block distribution module 1004 and a download statemonitoring module 1006.

The connection establishment module 1000 establishes connections withnodes from which data are to be downloaded using the node listinformation provided from the connection control server. The connectionestablishment may comprise following steps;

(i) A user client sends a request for TCP connection to a node.

(ii) The node determines if the TCP connection can be allowed.

(iii) The node allows TCP connection.

As explained above, other connection establishment methods other thanTCP can be employed.

The connection state determining module 1002 determines the connectionstate with each of the nodes. The connection state determining module1002 calculates connection state valuation index for determiningconnection state.

According to an embodiment of the present invention, the connectionstate valuation index may be calculated using round-trip time with eachof the nodes.

According to another embodiment of the present invention, the connectionstate valuation index can be calculated using download speed informationfrom each of the nodes. Alternatively, both of the round-trip time anddownload speed can be used for calculation of connection state valuationindex.

It is desirable that the connection state valuation index is calculatedusing the round-trip time initially, because download speed is not knowninitially, and the connection state valuation index is calculated usingthe download speed after data download is performed. As the downloadspeed changes continuously, the connection state valuation index is alsoupdated depending on the change of download speed.

According to another embodiment of the present invention, the connectionstate determining module receives information on state of servers fromthe servers and determines the connection state using the stateinformation.

The sub block distribution module 1004 distributes sub blocks using theconnection state valuation index calculated by the connection statedetermining module 1002. It is preferable that the sub blockdistribution module 1004 determines the number of sub blocks to downloadfrom each of the nodes according to the ratio of connection statevaluation index.

The download state monitoring module 1006 determines if there exists aconnection where sub block download is completed and requests sub blockredistribution to the sub block manager module 1004 when a connectionwhere sub block download is completed exists.

It is not efficient if sub blocks are redistributed for all connectednodes, because control signal should be transmitted to the all nodes.Therefore, according to a preferred embodiment of the present invention,sub blocks are redistributed between a connection where sub blockdownload is completed and a connection of which the download rate is thelowest. At this case, control signal is transmitted to only the nodewhich completed the sub block transmission and the node of which datatransmission rate is the lowest.

FIG. 11 is a flow chart of process that sub block is redistributed bydetermining connection state according to a preferred embodiment of thepresent invention

Referring to FIG. 11, round-trip times with each of the connected nodesare measured in initial state of download S1100. Round-trip time meanstime duration between transmitting check signal to a connected node andreceiving the response signal of the check signal.

After measuring round-trip signal, it is determined if average downloadspeed can be known in all connections S1102. If several blocks aredownloaded, average download speed in all connections can be known.

When average download speed in all connections can be known, theconnection state valuation index is calculated using the averagedownload speed information S1104. For example, when streaming data aredownloaded from 3 nodes and average download speed of 3 nodes is 500,000bps, 100,000 bps and 64,000 bps, the connection state valuation index ineach connection is 500,000, 100,000 and 64,000 respectively. Normalizedvalue of average download speed can also be used as connection statevaluation index.

When average download speed in all connections cannot be known, it isdetermined if average download speed in some of the connections can beknown S1106. This case can occur when streaming data are downloaded fromnew node while downloading streaming data.

When average download speed can be known in some of the connections, theconnection state valuation index is calculated using round-trip time andaverage download speed S1108.

For example, assuming that streaming data are downloaded from 3 nodes,and average download speed of the first node is 200,000 bps, averagedownload speed of the second node is 100,000 bps and average downloadspeed of the third node is not known. Further, assuming that round-triptime of the first node is 23 ms, round-trip time of the second node is32 ms and round trip time of the third node is 20 ms.

In this case, the connection state valuation index is calculated by(download speed)/(round-trip time). Average download speed of the thirdnode, is predicted using the value of which the (downloadspeed)/(round-trip time) is the smallest. As the (downloadspeed)/(round-trip time) of the second node is the smallest, the averagedownload speed of the third node is calculated by the following equation1.

$\begin{matrix}{{\frac{100,000}{20} \times 32} = {160,500}} & \left\lbrack {{Equation}\mspace{14mu} 1} \right\rbrack\end{matrix}$

If average download speed in all connections cannot be known, theconnection state valuation index is calculated using round-trip time.According to an embodiment of the present invention, reciprocal of theround-trip time can be used as the connection state valuation index.

For example, assuming that streaming data are downloaded from 3 nodesand round-trip time of each node is 23 ms, 41 ms and 32 ms. In thiscase, the connection state valuation index of each node may be 1/23,1/42 and 1/32 respectively.

After calculation of connection state valuation index, the number of subblock to be downloaded from each of the nodes among all sub blocks isdetermined.

The number of sub block to be downloaded from each of the nodesdetermined by the connection state valuation index. In more detail, thenumber of sub block to be downloaded is determined by the followingequation 2.

$\begin{matrix}{{{P_{i} = \left\lbrack {\frac{\alpha_{i}}{\sum\limits_{k = 1}^{n}} \times \left( {{The}\mspace{14mu}{number}\mspace{14mu}{of}\mspace{14mu}{total}\mspace{14mu}{sub}\mspace{14mu}{blocks}} \right)} \right\rbrack},{{{where}\mspace{14mu} i} = {1 \sim {n - 1}}}}{{P_{i} = {\left( {{The}\mspace{14mu}{Number}\mspace{14mu}{of}\mspace{14mu}{total}\mspace{14mu}{sub}\mspace{14mu}{blocks}} \right) - {\sum\limits_{k = 1}^{n - 1}P_{i}}}},{{{where}\mspace{14mu} i} = n}}} & \left\lbrack {{equation}\mspace{14mu} 2} \right\rbrack\end{matrix}$

Wherein, P_(i) is the number of sub block to be requested to each of thenodes, as is connection state valuation index in each of theconnections. In other words, the user client requests sub block of whichthe number is P_(i) to each node.

FIG. 12 is a flow chart of process that is performed when there exists aconnection where sub block download is completed according to apreferred embodiment of the present invention.

Referring to FIG. 12, the download state monitoring module of theconnection control module monitors if there exists a connection wheresub block download is completed S1200.

If there exists a connection where sub block download is completed, aconnection of which the download rate is the lowest is searched S1202.The download rate can be calculated by (the number of downloaded subblocks)/(the number of requested sub blocks).

When the connection of which the download rate is the lowest issearched, the number of remaining sub blocks to be downloaded in theconnection of which the download rate is the lowest is calculated S1204.

After the calculating the number remaining sub blocks in the connectionof which the download rate is the lowest, it is determined if it isnecessary to redistribute sub blocks to be downloaded between theconnection where sub block download is completed and the connection ofwhich the download rate is the lowest S1206. For example, if remainingsub blocks can be downloaded while transmitting control signal forredistributing sub blocks, redistribution of sub blocks would not benecessary.

If it is determined that redistribution of sub blocks is necessary, thesub blocks to be downloaded from the connection where sub block downloadis completed and the connection of which the download rate is the lowestis redistributed according to the connection state valuation indexS1208.

Sub blocks are may be distributed by the following equation 3.

$\begin{matrix}{P_{1} = \left\lbrack {{\frac{\alpha_{1}}{\alpha_{1} + \alpha_{2}} \times \left( {{the}\mspace{14mu}{number}\mspace{14mu}{of}\mspace{14mu}{remaining}\mspace{14mu}{sub}\mspace{14mu}{blocks}} \right)\text{}P_{2}} = {\left( {{the}\mspace{14mu}{number}\mspace{14mu}{of}\mspace{14mu}{remaining}\mspace{14mu}{sub}\mspace{14mu}{blocks}} \right) - P_{1}}} \right.} & \left\lbrack {{equation}\mspace{14mu} 3} \right\rbrack\end{matrix}$

P₁ is the number of sub blocks redistributed to the connection of whichthe download rate is the lowest, α₁ is the connection state valuationindex of the connection of which the download rate is the lowest, P₂ isthe number of sub blocks redistributed to the connection where sub blockdownload is completed, and the α₂ is the connection state valuationindex of the connection where sub block download is completed.

If sub blocks are redistributed, sub blocks are requested to the nodecorresponding to each connection according to the new distributionresult. If it is not necessary to download sub blocks from theconnection of which the sub block download rate is the lowest, the userclient requests stoppage of the sub block transmission to thecorresponding node.

FIG. 13 is a block diagram of module of the connection control serveraccording to a preferred embodiment of the present invention.

FIG. 13 illustrates module of the connection control server in thesystem of P2P network of FIG. 12 or in the system multiple servers andP2P are combined such as FIG. 4.

Referring to FIG. 13, the connection control server according to anembodiment of the present invention may comprise a mesh manager module1300, a node information providing module 1302 and an authenticationmodule 1304. A user database 1306, a meta information data base 1308 andmesh information database may be coupled to the connection controlserver.

In FIG. 13, the mesh manager module 1300 manages information on userclients connected to the connection control server. As described above,when the power of the user client is on or the communication agentprogram is executed, client address information and information ofcontents stored in the client are transmitted to the connection controlserver, and the mesh manager module 1300 receives the information andstores it in the mesh information database 1310.

When a user requests specific contents, the node list providing module1302 derives information of nodes that store the corresponding contentsusing the mesh information database 1310 and provides the derivedinformation to the user client.

The authentication module 1304 authenticates users and processes billinginformation. When a user requests contents, authentication keyinformation including user ID and password is transmitted to theconnection control server, and the authentication module 1304 determinesif the user is a registered user. Further, the authentication module1304 determines if the user has paid for the contents by thecommunication with external billing server.

ID of registered users, password, personal information, etc. are storedin the user database 1306, and contents coding method, information ofauthor, etc. is stored in the meta information database 1308. If theuser who requests contents is authorized, the mesh manager module 1300provides meta information to the user. Generally, meta information isnecessary for play of the streaming data, however, if play of streamingdata is possible without meta information, the meta information database1308 may not be coupled to the connection control server.

Information of user clients connected to the connection control serverand information of contents stored in each of the user clients arestored in the mesh information database 1310.

FIG. 14 is a block diagram of the module of the connection controlserver according to another embodiment of the present invention.

Referring to FIG. 14, the connection control server may include a serverstate determining module 1400, a sub block distribution module 1402, aserver list providing module 1404 and an authentication module 1406. Auser database 1408, contents server database 1410 and meta informationdatabase 1412 may be coupled to the connection control server.

The server state determining module determines state information ofcontent servers which are managed by the connection control server. Asdescribed above, the server state determining module 1400 usesinformation including bandwidth, CPU usage rate, memory usage rate, thenumber of connected users, and file I/O, etc. in order to determinestate of each of the content servers.

The server list providing module 1404 provides list information ofcontent servers which the user client requesting contents should connectto. The server list providing module provides list of servers with goodstate using the determination result of the server state determiningmodule.

The sub block distribution module 1402 provides information of thenumber of sub blocks to be downloaded from each of the content serversusing the state information of the content servers to the user clientwhich requested contents.

Information of content servers which the connection control servermanages is stored in the content server database 1410.

Function of the authentication module 1406 and information stored in theuser database 1408 and meta information database 1412 are same as thecase of FIG. 13.

INDUSTRIAL APPLICABILITY

As described above, according to the present invention, stable streamingservice can be provided although error occurs in a connection, becausestreaming data are provided through multiple paths.

Further, according to the present invention, download efficiency can beimproved by avoiding occurrence of idle connection because sub blocks tobe downloaded are redistributed if sub block download in a connection iscompleted.

Especially, the present invention is useful when streaming data aredownloaded through the plurality of nodes in P2P network.

1. A method for downloading streaming data comprising: establishingconnections between a user client and a plurality of nodes, theplurality of nodes comprising a first node and a second node; dividingstreaming data into a plurality of blocks for sequential download, theblocks comprising a first block and a second block; dividing the firstblock into a plurality of sub blocks; determining first sub blocks ofthe first block to download from the first node and second sub blocks ofthe first block to download from the second node; sending a request tothe nodes to download determined ones of the sub blocks to the userclient, in parallel; monitoring the downloading of the sub blocks fromthe nodes to the user client, through the established connections;determining whether a download of the second sub blocks from the secondnode is finished; determining an un-downloaded portion of the first subblocks; and maintaining a download of a first portion of theun-downloaded portion of the first sub blocks from the first node andredistributing a second portion of the un-downloaded portion of thefirst sub blocks to the second node in response to a determination thatthe download of the second sub blocks from the second node is finished,a ratio of the first portion of the un-downloaded portion to the secondportion of the un-downloaded portion being determined according to aratio of the connection state valuation index for the first node to theconnection state valuation index for the second node, wherein thesending, the monitoring, and the redistributing are repeated fordownloading sub blocks included in the second block, when downloading ofthe first block is completed, and wherein the ratio of the connectionstate valuation index for the first node to the connection statevaluation index for the second node is determined based on at least oneof a ratio between a round trip time between the user client and thefirst node and a round trip time between the user client and the secondnode and a ratio between an average download speed from the first nodeto the user client and an average download speed from the second node tothe user client.
 2. The method of claim 1, wherein the monitoring of thedownloading comprises determining which of the nodes are finisheddownloading.
 3. The method of claim 1, wherein the plurality of subblocks are assigned to the nodes based on a round-trip time with each ofthe nodes, an average download speed from each of the nodes, or acombination thereof.
 4. The method of claim 1, wherein if the first nodehas a lowest download rate among the connected nodes, the redistributingis based on the download rate of the first node and the number ofun-downloaded sub blocks of the first node.
 5. The method of claim 1,further comprising storing information of nodes with which theconnection establishment failed in a black list queue.
 6. The method ofclaim 1, further comprising receiving node state information, whereinthe first sub blocks and the second sub blocks are determined using thenode state information.
 7. The method of claim 1, wherein the pluralityof sub blocks to be downloaded from each of the nodes are assignedaccording to: state information of the nodes in an initial state ofdownload, after a determination of download speed from each of thenodes; and by using a connection state valuation index that iscalculated using a round-trip time with each of the nodes, an averagedownload speed from each of the nodes, or a combination thereof.
 8. Themethod of claim 6, wherein the connection establishment with the nodesis performed using state information of the nodes.
 9. The method ofclaim 1, further comprising determining a downloading error using achecksum value of the downloaded sub blocks.
 10. The method of claim 1,further comprising sending a request to download the redistributed subblocks.
 11. The method of claim 1, further comprising downloadingstreaming data by connecting to a singular server, if the sub blockdownloading fails.
 12. A non-transitory computer-readable storage mediumcomprising an executable program, which when executed, downloadsstreaming data by performing the following steps: establishingconnections between a user client and a plurality of nodes, theplurality of nodes comprising a first node and a second node; dividingstreaming data into a plurality of blocks for sequential download, theblocks comprising a first block and a second block; dividing the firstblock into a plurality of sub blocks; determining first sub blocks ofthe first block to download from the first node and second sub blocks ofthe first block to download from the second node; sending a request tothe nodes to download determined ones of the sub blocks to the userclient, in parallel; monitoring the downloading of the sub blocks fromthe nodes to the user client, through the established connections;determining whether a download of the second sub blocks from the secondnode is finished; determining an un-downloaded portion of the first subblocks; and maintaining a download of a first portion of theun-downloaded portion of the first sub blocks from the first node andredistributing a second portion of the un-downloaded portion of thefirst sub blocks to the second node in response to a determination thatthe download of the second sub blocks from the second node is finished,a ratio of the first portion of the un-downloaded portion to the secondportion of the un-downloaded portion being determined according to aratio of the connection state valuation index for the first node to theconnection state valuation index for the second node, wherein thesending, the monitoring, and the redistributing are repeated fordownloading sub blocks included in the second block, when downloading ofthe first block is completed, and wherein the ratio of the connectionstate valuation index for the first node to the connection statevaluation index for the second node is determined based on at least oneof a ratio between a round trip time between the user client and thefirst node and a round trip time between the user client and the secondnode and a ratio between an average download speed from the first nodeto the user client and an average download speed from the second node tothe user client.
 13. The storage medium of claim 12, wherein theplurality of sub blocks are assigned based on a connection statevaluation index that is calculated using a roundtrip time with each ofthe nodes, an average download speed from each of the nodes, or acombination thereof.
 14. The storage medium of claim 12, furthercomprising receiving node state information, wherein the plurality ofsub blocks are assigned to each of the nodes based on node stateinformation.
 15. The storage medium of claim 14, wherein theestablishing of the connection with the nodes is performed using thenode state information.
 16. The storage medium of claim 12, wherein theplurality of sub blocks are assigned based on: state information of thenodes in an initial state of download, after a determination of downloadspeed from each of the nodes; and by using a connection state valuationindex that is calculated using a round-trip time with each of the nodes,an average download speed from each of the nodes, or a combinationthereof.
 17. The storage medium of claim 12, wherein the monitoring ofthe downloading comprises monitoring the completion of downloading foreach of the nodes.
 18. The storage medium of claim 17, wherein the firstnode has the lowest download rate among the nodes.
 19. The storagemedium of claim 12, wherein the redistributing of the un-downloadedportion of the first sub blocks is based on the download rate and thenumber of un-downloaded sub blocks assigned to the first node.
 20. Thestorage medium of claim 12, further comprising storing information ofnodes with which the connection establishment failed, in a black listqueue.
 21. The storage medium of claim 12, further comprisingdetermining a downloading error using a checksum value of the downloadedsub blocks.
 22. The storage medium of claim 12, further comprisingsending a request to download the redistributed sub blocks.
 23. Thestorage medium of claim 12, further comprising downloading streamingdata by connecting to a singular server, if the sub block downloadingfails.
 24. A method for downloading streaming data comprising:establishing connections with a first node and a second node amongmultiple nodes; obtaining a first connection state valuation index forthe first node based on at least one of a round-trip time between a userclient and the first node and an average download speed from the firstnode to the user client; obtaining a second connection state valuationindex for the second node based on at least one of a round-trip timebetween a user client and the second node and an average download speedfrom the second node to the user client; determining a first portion ofstreaming data for the first node and a second portion of the streamingdata for the second node, based on the first connection state valuationindex and the second connection state valuation index; sending a firstrequest to the first node to transmit the first portion of the streamingdata, and a second request to the second node to transmit the secondportion of the streaming data, in parallel; receiving the first portionof the streaming data from the first node, and the second portion of thestreaming data from the second node; monitoring a download state of thefirst portion of the streaming data and a download state of the secondportion of the streaming data; determining an un-downloaded portion ofthe first portion of the streaming data in response to a determinationthat the download state of the second portion of the streaming datasatisfies a determined condition; recalculating a first recalculatedconnection state valuation index for the first node and a secondrecalculated connection state valuation index for the second node inresponse to the determination that the download state of the secondportion of the streaming data satisfies the determined condition;determining a first portion of the un-downloaded portion for the firstnode and a second portion of the un-downloaded portion for the secondnode, a ratio of the first portion of the un-downloaded portion to thesecond portion of the un-downloaded portion being determined accordingto a ratio of the first recalculated connection state valuation index tothe second recalculated connection state valuation index; and receivingthe first portion of the un-downloaded portion from the first node, andreceiving the second portion of the un-downloaded portion from thesecond node.
 25. The method of claim 24, wherein a connection statevaluation index comprises a value that is proportional to an averagedownload speed and/or a value that is proportional to a reciprocal of around-trip time.
 26. The method of claim 24, wherein the first portionof the streaming data for the first node comprises a first portion of afirst block of the streaming data, and the second portion of thestreaming data for the second node comprises a second portion of thefirst block of the streaming data, wherein the first portion of thefirst block and the second portion of the first block comprise one ormore sub blocks of the streaming data.
 27. The method of claim 25,wherein a streaming of a second block of the streaming data is initiatedif all sub blocks included in the first block are downloaded.
 28. Themethod of claim 25, wherein a number of sub blocks included in the firstportion of the streaming data is proportional to the first connectionstate valuation index, and a number of sub blocks included in the secondportion of the streaming data is proportional to the second connectionstate valuation index.
 29. The method of claim 25, wherein a number ofsub blocks included in the first portion of the un-downloaded portion isproportional to the first recalculated connection state valuation index,and a number of sub blocks included in the second portion of theun-downloaded portion is proportional to the second recalculatedconnection state valuation index.
 30. The method of claim 25, furthercomprising determining whether a download of the second portion of thestreaming data is finished, wherein determining the un-downloadedportion of the first portion of the streaming data is performed inresponse to a determination that the download of the second portion ofthe streaming data is finished.
 31. A method for downloading streamingdata comprising: establishing connections between a user client and aplurality of nodes, the plurality of nodes comprising a first node, asecond node, and a third node; determining first sub blocks of a firstblock to download from the first node and second sub blocks of the firstblock to download from the second node; sending a request to the nodesto download determined ones of the sub blocks to the user client, inparallel; monitoring the downloading of the sub blocks from the nodes tothe user client, through the established connections; determining anun-downloaded portion of the first sub blocks based on a download stateof the second sub blocks; and downloading the un-downloaded portion ofthe first sub blocks using at least two nodes of the first node, thesecond node, and the third node, wherein a redistribution of theun-downloaded portion of the first sub blocks being determined accordingto a ratio between connection state valuation indexes for the at leasttwo nodes, wherein a connection state valuation index for a node isdetermined based on at least one of a round trip time between the userclient and the node and an average download speed from the node to theuser client.